package d4_final;

public class FinalDemo01 {
    //5.final修饰的静态成员变量,称为常量
    //static fina修饰成员变量后叫做常量---->哪些数值就是字面量例如:34,78
    //常量的单词建议全部大写, 多个单词用户下换线连接
    public static final String SCHOOL_NAME;//--->常量在类加载的时候就的赋值
    //static{}也是随着类的加载而加载,所以也可以在static中进行加载
    static{
        SCHOOL_NAME = "黑马程序员";
//        SCHOOL_NAME = "";//报错,第二次赋值
    }
    public static void main(String[] args) {
        //目标: 掌握final关键字作用
        //3.final修饰变量, 有且仅能赋值一次
        //首先java的变量有几种?
        /**
         *  成员变量
         *      类变量(静态变量)
         *      实例变量
         *  局部变量: 方法内, 形参, for循环变量, 构造器中的变量是局部变量
         */

        //4.final修饰的局部变量
        final int a = 12;
        //a = 15;//会报错,第二次赋值`
        final double r = 3.14;
        buy(0.7);
    }

    //6.final修饰的实例变量
    private final String name = "高估年";//没啥意义

    public static void buy(final double z){
//        z = 0.1; //报错,第二次赋值
    }

}

//1.final修饰类,类不能被继承
//final修饰的类被称为最终类, 特点是不能被继承了

//final class A{}
//class B extends A{}//会报错


//2.final修饰方法, 方法不能重写
/*
 class C {
    public final void run() {
    }
}

class D extends C {
    @Override
    public void run() {//报错
        super.run();
    }
}*/

//final修饰的变量注意事项
//基本类型变量,就是存储的数据不能变
//引用类型,就是地址不能变,但是数据能改
